import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;

/**
 * Escribe una descrición de la clase Heroe aquí.
 * 
 * @autor (tu nombre) 
 * @versión (Un número de versión o una fecha)
 */
public class Heroe extends Actor
{
    private static boolean movss;
    private static int rango =5;
    private static int retardo =1;
    private GreenfootImage []imagenes;

    public Heroe()
    {
        //CARGADO DE IMAGENES
        imagenes= new GreenfootImage[17];
        imagenes[0]= new GreenfootImage("normal.png");
        imagenes[1]=new GreenfootImage("abj1.png");
        imagenes[2]=new GreenfootImage("abj2.png");
        imagenes[3]=new GreenfootImage("abj3.png");
        imagenes[4]=new GreenfootImage("abj4.png");
        imagenes[5]=new GreenfootImage("der1.png");
        imagenes[6]=new GreenfootImage("der2.png");
        imagenes[7]=new GreenfootImage("der3.png");
        imagenes[8]=new GreenfootImage("der4.png");
        imagenes[9]=new GreenfootImage("izq1.png");
        imagenes[10]=new GreenfootImage("izq2.png");
        imagenes[11]=new GreenfootImage("izq3.png");
        imagenes[12]=new GreenfootImage("izq4.png");
        imagenes[13]=new GreenfootImage("arb1.png");
        imagenes[14]=new GreenfootImage("arb2.png");
        imagenes[15]=new GreenfootImage("arb3.png");
        imagenes[16]=new GreenfootImage("arb4.png");
        setImage(imagenes[0]);
    }

    /**
     * Act - hace lo que Heroe quiere hacer. Este método se llama "cuando quiera" o whenever
     * los botones 'Actuar or 'Ejecutar' son presionados en el entorno.
     */
    public void act() 
    {
        // Agrega tus códigos de acción aquí.
        //World aux = World();
        mueve();
        removeTouching(Corazon.class);
    }   

    public void mueve()
    {
        int x=getX();
        int y=getY();
        Actor detectaPieza=null;

        if(Greenfoot.isKeyDown("down"))
        {
            detectaPieza=getOneObjectAtOffset(0, 10, Obstaculo.class);
            if(detectaPieza==null)
            {
                for(int i=0;i<4;i++)
                {
                    setLocation(x,y+i+4);
                    setImage(imagenes[i]);
                    Greenfoot.delay(1);
                }
                setImage(imagenes[0]);  
            } 
            else
            {
                if(detectaPieza instanceof Puerta)
                     Greenfoot.setWorld(new Room1_1());
            }

        }
        if(Greenfoot.isKeyDown("right"))
        {
            detectaPieza=getOneObjectAtOffset(10, 0, Obstaculo.class);
            if(detectaPieza==null)
            {
                for(int i=0;i<4;i++)
                {

                    setImage(imagenes[i+5]);
                    setLocation(x+i+4,y);
                    Greenfoot.delay(1);
                }
                setImage(imagenes[5]);
            }
            else
            {
                if(detectaPieza instanceof Puerta)
                     Greenfoot.setWorld(new Room1_1());
            }

        }
        if(Greenfoot.isKeyDown("left"))
        {
            detectaPieza=getOneObjectAtOffset(-10, 0, Obstaculo.class);
            if(detectaPieza==null)
            {
                for(int i=0;i<4;i++)
                {

                    setImage(imagenes[i+9]);
                    setLocation(x-i-4,y);
                    Greenfoot.delay(1);
                }
                setImage(imagenes[9]);
            }
            else
            {
                if(detectaPieza instanceof Puerta)
                     Greenfoot.setWorld(new Room1_1());
            }

        }
        if(Greenfoot.isKeyDown("up"))
        {
            detectaPieza=getOneObjectAtOffset(0, -10, Obstaculo.class);
            if(detectaPieza==null)
            {
                for(int i=0;i<4;i++)
                {

                    setImage(imagenes[i+13]);
                    setLocation(x,y-i-4);
                    Greenfoot.delay(1);
                }
                setImage(imagenes[13]); 
            }
            else
            {
                if(detectaPieza instanceof Puerta)
                     Greenfoot.setWorld(new Room1_1());
            }
        }
        Greenfoot.delay(2);
        setImage(imagenes[0]);
    }
}

